﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>DI_LISTBOX</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../styles/styles.css">
<script language="javascript" src='../../links.js' type="text/javascript"></script>
</head>
<body>

<h1>DI_LISTBOX</h1>
<div class=navbar>
<a href="../../index.html">главная</a> |
<a href="index.html">элементы диалога</a> |
<a href="../index.html">Dialog API</a>
</div>

<div class=shortdescr>
Элемент диалога <code>DI_LISTBOX</code> описывает список.
</div>

<pre class=syntax>
struct FarDialogItem
{
  enum FARDIALOGITEMTYPES Type = <b>DI_LISTBOX</b>
  intptr_t X1                  = <b>X1</b>
  intptr_t Y1                  = <b>Y1</b>
  intptr_t X2                  = <b>X2</b>
  intptr_t Y2                  = <b>Y2</b>
  struct FarList *ListItems    = <b>ListItems</b>
  FARDIALOGITEMFLAGS Flags     = <b>Flags</b>
  const wchar_t *Data          = <b>верхний заголовок списка</b>
};
</pre>

<p class=note><img src="../../../images/note.gif" alt="Внимание!" width="10" height="10"> Внимание!</p>
<UL class=note><LI>Приведено схематичное изображение структуры; полное описание структуры <a href="../../structures/fardialogitem.html">см. здесь</a>.</LI></UL>

<h3>ListItems</h3>
<div class=descr>Указатель на структуру <a href="../../structures/farlist.html">FarList</a>, описывающую пункты для начальной инициализации списка.</div>

<h3>Флаги</h3>
<div class=descr>
Для элемента <code>DI_LISTBOX</code> имеют значения следующие флаги (про флаги списка см. <a href="../../structures/farlistitem.html">FarListItem</a>):
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Флаг</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_defaultbutton.html">DIF_DEFAULTBUTTON</a></td>
<td class="cont" width="60%">флаг, означающий, что данный элемент диалога является "элементом по умолчанию"</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_focus.html">DIF_FOCUS</a></td>
<td class="cont" width="60%">определяет, что при показе диалога установить клавиатурный фокус ввода на данный элемент</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_listautohighlight.html">DIF_LISTAUTOHIGHLIGHT</a></td>
<td class="cont" width="60%">горячие клавиши будут назначены автоматически</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_listnoampersand.html">DIF_LISTNOAMPERSAND</a></td>
<td class="cont" width="60%">показывать горячие клавиши в списке</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_listwrapmode.html">DIF_LISTWRAPMODE</a></td>
<td class="cont" width="60%">"заворачивает" список при навигации по списку</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_listnoclose.html">DIF_LISTNOCLOSE</a></td>
<td class="cont" width="60%">не закрывать диалог при выборе элемента в списке</td></tr>
<tr><td class="cont" width="40%"><a href="../flags/dif_listtrackmouse.html">DIF_LISTTRACKMOUSE</a></td>
<td class="cont" width="60%">реагировать на движение мыши в списке</td></tr>
<tr><td class="cont" width="40%"><a href="../flags/dif_listtrackmouseinfocus.html">DIF_LISTTRACKMOUSEINFOCUS</a></td>
<td class="cont" width="60%">реагировать на движение мыши в списке только если элемент находится в фокусе</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_disable.html">DIF_DISABLE</a></td>
<td class="cont" width="60%">элемент является недоступным</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_nofocus.html">DIF_NOFOCUS</a></td>
<td class="cont" width="60%">управляющий элемент не получает клавиатурный фокус ввода</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../flags/dif_listnobox.html">DIF_LISTNOBOX</a></td>
<td class="cont" width="60%">отключает прорисовку рамки вокруг списка. В этом случае <code>Data</code> игнорируется</td></tr>
</table>
</div>

<h3>События</h3>
<div class=descr>
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Событие</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_drawdlgitem.html">DN_DRAWDLGITEM</a></td>
<td class="cont" width="60%">начало отрисовки элемента</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_ctlcolordlglist.html">DN_CTLCOLORDLGLIST</a></td>
<td class="cont" width="60%">запрос цветовых атрибутов для отрисовки списка</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_listchange.html">DN_LISTCHANGE</a></td>
<td class="cont" width="60%">изменилась позиция в списке</td></tr>
<tr class="cont"><td class="cont" width="40%"><a href="../dmsg/dn_listhotkey.html">DN_LISTHOTKEY</a></td>
<td class="cont" width="60%">пользователь для смены пункта в списке воспользовался горячими клавишами</td></tr>
</table>
</div>

<h3>Замечания</h3>
<div class=descr>
Работа со списками <code>DI_COMBOBOX</code> и <code>DI_LISTBOX</code> организована по следующей схеме:
<ul>
<li>Запуск DialogInit<br>
    FarDialogItem.Param.ListItems - только для начальной инициализации.
    <br><br>
<li>DM_LISTADD<br>
    Добавляет только пункт списка, без ассоциированных данных
    <br><br>
<li>DM_LISTINSERT<br>
    Вставляет только пункт списка, без ассоциированных данных
    <br><br>
<li>DM_LISTUPDATE<br>
    Удаляет UserData для обновляемого пункта списка.<br>
    Только обновление данных пункта списка без ассоциированных данных
    <br><br>
<li>DM_LISTSETDATA<br>
    Перед установкой новых ассоциированных данных предыдущие
    уничтожаются (если было выделение по памяти)
    <br><br>
<li>DM_LISTGETDATA<br>
    Возвращается значение, предварительно установленное DM_LISTSETDATA.
    <br><br>
<li>DM_LISTGETDATASIZE<br>
    Возвращается размер ассоциированных данных.
    <br><br>
<li>DM_LISTGETITEM<br>
    Возвращает только пункт списка, без ассоциированных данных.
    <br><br>
<li>Завершение DialogFree<br>
    Ассоциированные данные уничтожаются (если было выделение по памяти)
    <br><br>
</ul>
</div>

<div class=descr>
<p>Текстовый курсор после инициализации элемента - в режиме замены.</p>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="di_combobox.html">DI_COMBOBOX</a>,
<a href="../../structures/fardialogitem.html">FarDialogItem</a>
</div>

</body>
</html>